package org.acb.sgp.dao.impl;

import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import org.acb.sgp.beans.Estado;
import org.acb.sgp.dao.EstadoDao;
import org.acb.sgp.factory.ConnectionFactory;

public class EstadoDaoImpl implements EstadoDao {

    private Connection con;
    private CallableStatement cs;
    private ResultSet rs;

    private Connection getConnection() throws SQLException {
        return ConnectionFactory.getInstance().getConnection();
    }

    @Override
    public void registrarEstado(Estado estado) {
    }

    @Override
    public void eliminarEstado(Estado estado) {
    }

    @Override
    public Estado buscarEstadoPorCodigo(Integer codEstado) {
        return null;
    }

    @Override
    public List<Estado> listaEstados() {
        List<Estado> estados = new ArrayList<Estado>();
        try {
            String sql = "{Call ListarEstados()}";
            con = getConnection();
            cs = con.prepareCall(sql);
            rs = cs.executeQuery();
            while (rs.next()) {
                estados.add(llenar(rs));
            }
        } catch (SQLException e) {
            System.out.println("ERROR EN EstadoDaoImpl>listaEstados: " + e.toString());
        } finally {
            ConnectionFactory.closing(rs, cs, con);
        }
        return estados;
    }

    private Estado llenar(ResultSet rs) throws SQLException {
        Estado estado = new Estado();
        estado.setCodEstado(rs.getInt("codEstado"));
        estado.setNomEstado(rs.getString("nomEstado"));
        return estado;
    }
}
